from utils.cookiesecret import CookieSecret
from django_redis import get_redis_connection
import json
# 封装 购物车合并
def merge_cart_cookie_to_redis(request,user,response):
    # 1.cookie_dict 数据
    cookie_str = request.COOKIES.get('carts')

    # 判断是否有值
    if cookie_str:
        # 解密
        cookie_dict = CookieSecret.loads(cookie_str)
    else:
        return response

    # 2.redis_dict 数据
    redis_client = get_redis_connection('carts')
    # 根据user.id 获取所有的数据 hgetall()--->bytes
    redis_data = redis_client.hgetall(user.id)
    # 字典推导式
    redis_dict = {int(data[0].decode()): json.loads(data[1].decode()) for data in redis_data.items()}


    # 3.覆盖 字典 update()    cookie 覆盖redis
    redis_dict.update(cookie_dict)

    # 4.遍历更新redis
    for sku_id in redis_dict:
        redis_client.hset(user.id,sku_id,json.dumps(redis_dict[sku_id]))

    # 5.删除cookie 数据
    response.delete_cookie('carts')

    return response

